今天嘗試考古在 CommonJS 出現前的 JavaScript 模組化歷史,從模組模式的由來,再聊到以前為了能達到非同步載入多個模組,並避免載入模組時產生過多 request 的問題,因而出現的 LABjs、YUI loader、YUI combo 等這些工具。
昨天參考這個投影片,提到 JavaScript 早期為了模組化所發展出的各種方法,而其中緊接著就跳到了 2009 年的 LABjs、YUI loader 等 script loader 工具,單憑投影片沒辦法瞭解這中間的脈絡是什麼,時間軸上也有點模糊。
大多文章會直接介紹 CommonJS、AMD、CMD、UMD、ESM,關於在這之前的歷史比較少提及,因此做了一番考古後找到良葛格這篇文章中有提到一篇文章 —— JavaScript Module Pattern: In-Depth,最後在交叉比對各種資料後,在 CommonJS 被提出前,可以大概整理出以下這樣的時間軸。
雖然昨天有針對程式碼去說明,這邊多補充一些歷史:
dojo.require()
來做模組載入,在之後則與 AMD 這個模組化標準去對齊此時討論的大多關於擴充之前的模組模式,以及關注如何在複雜應用中做到非同步載入模組 (script loader):
今天這篇的內容可以當歷史故事看看就好,純粹是一個興趣使然下突然燃起考古魂想了解一下在 CommonJS 出現前,前人如何為了模組化這件事努力,只要記得兩件事:
原本今天想寫到 ESM,但果然是太高估自己的考古能力了,明天終於可以開始進到比較熟悉的各種模組化標準了,希望可以一篇講到大一統的 ESM 後,就可以迎來介紹新工具的篇章了!
文章同步發表於個人部落格